package com.dms.mapper;

import com.dms.pojo.Class;
import com.dms.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @className: CollegeManageMapper
 * @package: com.dms.mapper 院部管理模块DAO接口层
 * @description
 * @author: sk
 */
public interface CollegeManageMapper {

    // 模糊分页查询 院部列表集合
    List<College> getCollegeListLimit(Map<String, Object> map);

    //获取院部total
    int getCollegeTotal(String query);

    //检查院部名是否已经存在
    College getCollegeInfo(String collegeName);

    //添加院部
    int addCollege(College college);

    //修改院部信息
    int editCollege(College college);

    //删除院部信息
    int deleteCollege(String collegeName);

    /**********************************************************************************/

    //获取所有学院集合
    List<College> getCollegeList();

    //获取专业列表集合信息
    List<College> getMajorListLimit(Map<String, Object> map);

    //获取专业列表total
    int getMajorTotal(@Param("select") String select, @Param("query") String query);

    //获取专业信息
    Major getMajorInfo(String majorName);

    //添加专业信息
    int addMajor(Major major);

    //修改专业信息
    int editMajor(Major major);

    //删除专业信息
    int deleteMajor(String majorName);

    /***********************************************************************************************************************/
    //获取班级列表集合
    List<Class> getClassListLimit(Map<String, Object> map);

    //获取班级列表total
    int getClassTotal(Map<String, Object> map);

    //获取班级所有学生信息
    List<Student> getClassStudentInfo(@Param("majorId") int majorId, @Param("classId") int classId);

    //获取班级信息
    Class getClassInfo(@Param("majorId")int majorId, @Param("className") String className);

    //获取班级信息
    Class getClassByClassName(String className);

    //获取班级信息
    Class getClassByClassId(int classId);

    //添加班级
    int addClass(Class aClass);

    //编辑班级信息
    int editClass(Class aClass);

    //删除班级信息
    int deleteClass(String className);

    /************************************************************************************************/

    //模糊查询获取学生信息
    List<Student> getStudentListLimit(Map<String, Object> map);

    //获取total
    int getStudentTotal(Map<String, Object> map);

    //获取学生信息
    Student getStudentByUserName(String userName);

    //1、添加学生
    int addStudent(Student student);

    //2、获取学生信息

    //3、在user表中插入记录
    int addStudentUser(Map<String, Object> map);

    //4、获取当前宿舍的信息，用以判断当前宿舍是否满员
    Dormitory getDormitoryInfo(int dormitoryId);

    //5、更新dormitory表中的已住人数
    int updateLiveIn(int dormitoryId);

    //编辑学生
    int editStudent(Student student);

    //修改dormitory表，如果是换寝室，则原寝室已住人数减1，当前寝室已住人数加1
    int updateDormitoryLiveIn(Map<String, Object> map);

    //删除学生
    int deleteStudent(String userName);

}
